from . import passport_blue
from flask import request, make_response, jsonify
from info.lib.captcha.captcha import captcha
from info import redis_storage
from info.utils.response_code import *
import re, random
from info.lib.yuntongxun.sms import CCP


# 添加获取图片验证码的路由，“／ｐａｓｓｐｏｒｔ”在蓝图里面设置
@passport_blue.route("/image_code")
def img_code():
    # 获取get提交来的code_id
    imgCode = request.args.get("code_id")
    # 获取图片验证码
    name, text, img = captcha.generate_captcha()
    # 设置redis 因为key是唯一的，所以要拼接下字符串
    redis_storage.set("img_code" + imgCode, text, 10)
    # 设置返回对象
    resp = make_response(img)
    # 设置响应头信息
    resp.headers['Text-Type'] = 'image/jpg'
    return resp

# 发送短信验证码
@passport_blue.route("/sms_code", methods = ["POST", "GET"])
def sms_code():
    # 获取前段发送来的ｊｓｏｎs数据
    mobile = request.json.get("mobile")
    image_code = request.json.get("image_code")
    image_code_id = request.json.get("image_code_id")

    #　判断是否有获取到数据
    if not all([mobile, image_code, image_code_id]):
        return jsonify(errno = RET.PARAMERR, errmsg = error_map.get(RET.PARAMERR))
    #　判断电话号码是否正确
    if not re.match(r"1[345678]\d{9}", mobile):
        return jsonify(errno = RET.PARAMERR, errmsg = "请输入正确的电话号码!")
    #　判断redis中的code是否过期
    real_img_code = redis_storage.get("img_code" + image_code_id)
    if not real_img_code:
        return jsonify(errno = RET.NODATA, errmsg = "验证码已经过期!")
    # 判断验证码是否正确

    if not real_img_code.lower() == image_code.lower():
        return jsonify(errno = RET.NODATA, errmsg = "验证码错误!")
    #　生成验证码
    # smsCode = "%05" % (random.randint(0,99999))
    # # 发送验证码
    # result = CCP.send_template_sms(mobile, smsCode, 2)
    # if not result == '0':
    #     return jsonify(errno = RET.THIRDERR, errmsg = '发送短信失败')
    # 返回成功！
    return jsonify(errno = RET.OK, errmsg = "发送成功")